import mock from '../mock'
const baseURL = process.env.BASE_API; // 请求的接口域名
console.log(`baseURL 是 ${baseURL}`);

const service = function (config) {
  console.log("config=" + JSON.stringify(config));

  return new Promise((resolve, reject) => {
    // https 请求成功
    const success = res => {
      const resData = res.data; //接口数据
      console.log("resData:" + resData);
      if (res.statusCode != 200) {
        // 结束文件流
        reject(res)
      }
      resolve(resData);
      switch (resData.errCode) {
        case "00":
          // 请求成功
          resolve(resData.data)
          break;
          // 其他错误码
        default:
          reject(resData.errMsg)
          break;
      }
    };
    const fail = res => {
      let errMsg = "";
      switch (res.statusCode) {
        case 400:
          errMsg = '请求错误';
          break;
        case 401:
          errMsg = '未授权，请登录';
          break;
        case 403:
          errMsg = '拒绝访问';
          break;
        case 404:
          errMsg = `请求地址出错: ${config.url}`;
          break;
        case 408:
          errMsg = '请求超时';
          break;
        case 500:
          errMsg = '服务器内部错误';
          break;
        case 501:
          errMsg = '服务未实现';
          break;
        case 502:
          errMsg = '网关错误';
          break;
        case 503:
          errMsg = '服务不可用';
          break;
        case 504:
          errMsg = '网关超时';
          break;
        case 505:
          errMsg = 'HTTP版本不受支持';
          break;
        default:
          break;
      };
      wx.showToast({ // 请求失败的ui
        title: errMsg,
        icon: "none"
      });
      console.error("请求失败" + errMsg);
      reject(errMsg);
    };
    // 发起网络请求
    const toRequest = () => {
      config.url = baseURL + config.url; //接口域名
      config.success = success; //成功
      config.fail = fail; // 失败
      // 补全公共参数
      // 进行参数加密组装
      wx.request(config);
    };
    const openMock = false; // 是否切换到mock
    // 判断当前环境
    if (openMock && process.env.NODE_ENV === "development") {
      mock.response(config).then(mockRes => {
        success(mockRes);
        console.log("mock请求成功")
      }).catch(err => {
        console.log("mock请求失败" + err);
        toRequest();
      })
    } else {
      // mock失败，正式发起请求
      toRequest()
    }
  })
}
export default service
